#ifndef __TRACELOG_H__
#define __TRACELOG_H__

#include <wild/Singleton.h>
#include <string>

namespace wild
{

enum eLOG_LEVEL
{
	L_DEBUG=0,
	L_WARNING, 
	L_ERROR
};

class TraceObj
{
public:
	virtual ~TraceObj(){}
	virtual void LogMsg(eLOG_LEVEL lev, const char* msg) = 0;
};

class TraceLog : public Singleton< TraceLog >
{
public:
	TraceLog();
	virtual ~TraceLog();
		
	void Regist( TraceObj* obj );
	void Log(eLOG_LEVEL lev, std::string msg);
private:
	TraceObj* m_obj;
};

}	//	namespace wild

#endif	//	__TRACELOG_H__
